package Negocio;

import java.util.ArrayList;
import java.util.List;

import DTO.DTO_Barra;
import DTO.DTO_Cafeteria;
import DTO.DTO_Cocina;
import DTO.DTO_Comanda;
import DTO.DTO_MesaComposite;
import DTO.DTO_MesaSimple;
import DTO.DTO_Producto;

public class Comanda {
	
	private int idcomanda;
	private List<Producto> productos;
	private Area area;
	private String estado;
	private Mesa mesa;
	
	//Constructores
	public Comanda(int idcomanda, List<Producto> productos, Area area, String estado, Mesa mesa) {
		super();
		this.idcomanda = idcomanda;
		this.productos = new ArrayList<Producto>();
		this.area = area;
		this.estado = estado;
		this.mesa = mesa;
	}

	public Comanda() {		
	}
	
	public Comanda(DTO_Comanda comanda){
		this.idcomanda = comanda.getIdcomanda();
		this.productos = new ArrayList<Producto>();
		
		if(comanda.getArea() instanceof DTO_Cocina)
			this.area= new Cocina((DTO_Cocina) comanda.getArea());
		else if(comanda.getArea() instanceof DTO_Cafeteria)
			this.area= new Cafeteria((DTO_Cafeteria) comanda.getArea());
		else if(comanda.getArea() instanceof DTO_Barra)
			this.area= new Barra((DTO_Barra) comanda.getArea());
		
		
		this.estado = comanda.getEstado();
		if(comanda.getMesa() instanceof DTO_MesaSimple)
			this.mesa = new MesaSimple((DTO_MesaSimple) comanda.getMesa());
		else if(comanda.getMesa() instanceof DTO_MesaComposite)
			this.mesa = new MesaComposite((DTO_MesaComposite) comanda.getMesa());
	}
	
	//GET & SET
	public int getIdcomanda() {
		return idcomanda;
	}

	public void setIdcomanda(int idcomanda) {
		this.idcomanda = idcomanda;
	}

	public List<Producto> getProductos() {
		return productos;
	}

	public void setProductos(List<Producto> productos) {
		this.productos = productos;
	}

	public Area getArea() {
		return area;
	}

	public void setArea(Area area) {
		this.area = area;
	}

	public String getEstado() {
		return estado;
	}

	public void setEstado(String estado) {
		this.estado = estado;
	}

	public Mesa getMesa() {
		return mesa;
	}

	public void setMesa(Mesa mesa) {
		this.mesa = mesa;
	}
	
	
	//METODOS DE NEGOCIO

	public DTO_Comanda toDTO(){
		DTO_Comanda com = new DTO_Comanda();
		com.setIdcomanda(idcomanda);
		com.setArea(area.toDTO());
		com.setEstado(estado);
		com.setMesa(mesa.toDTO());
		List<DTO_Producto> aux_prod = new ArrayList<DTO_Producto>();
		for(Producto e: productos){
			aux_prod.add(e.toDTO());
		}
		com.setProductos(aux_prod);
		return com;	
	}
		
}
